var mongoose = require('mongoose');
var Cate = require('../models/cate.model')// 引数据模型


//新增字段
exports.create = function(req,res,next){
    var cate = new Cate(req.body);

    cate.save()
    .then(data=>{
        res.json(data);
    })
}

//更新字段
exports.update = function(req,res,next){
    
      var id = req.params.id; 
      //取ID
      Cate.findByIdAndUpdate(id,{$set: req.body}, {new:false} )
      .then(data=>{
          res.json(data); //返回的data是更改后的数据
      })
}

function reverseTree(data,pid){ // pid=>parentId
    var result =[],
    temp;

    var data = JSON.parse( JSON.stringify(data) ); // 非常非常非常的重要,将数据模型的data进行了一个转化，转成了普通的json对象

    for(var i in data){
        if(data[i].parentId === pid){
            result.push(data[i]);

            temp = reverseTree(data,data[i]._id); // 递归操作

            if(temp.length>0){
                data[i].children = temp;
            }

        }
    }

    return result;
}



exports.list = function(req,res,next){
    var type=req.params.type;
    Cate.find({type:type},function(err,data){
        var rpTree = reverseTree(data,null);
        res.json(rpTree);
    })
}

exports.remove = function(req,res,next){
    var id= req.params.id;
    var ids = [];

    Cate.findOne({_id:id},function(err,doc){
        if(doc){
            ids = [doc._id]; // 因为我们用的是getChildren，并不包括自已，所以需要先将自己放到数组中

            doc.getChildren().then(function(docs){
                for(var i=0;i<docs.length;i++){
                    ids.push(docs[i]._id)
                }

                Cate.remove({_id: {$in: ids}})
                .then(data=>{
                    res.json({"msg":"数据删除成功",status:200})
                })
            })


        }
    })

}